import JSEncrypt from 'jsencrypt';
const Utils = {
  /*
   * 转换 obj 为 url params参数
   * @param obj 传入字符串
   * @returns {String}
   */
  objToParams(obj) {
    let str = '';
    for (const key in obj) {
      if (str !== '') {
        str += '&';
      }
      str += key + '=' + encodeURIComponent(obj[key]);
    }
    return str;
  },
  // RSA加密方法
  getRsaCode(str, pubKey) {
    let encryptStr = new JSEncrypt();
    encryptStr.setPublicKey(pubKey); // 设置 加密公钥
    let data = encryptStr.encrypt(str.toString()); // 进行加密
    return data;
  },
  /*
   * 转换 url params参数为obj
   * @param str 传入url参数字符串
   * @returns {Object}
   */
  paramsToObj(str) {
    let obj = {};
    try {
      obj = JSON.parse(
        '{"' +
          decodeURI(str)
            .replace(/"/g, '\\"')
            .replace(/&/g, '","')
            .replace(/=/g, '":"') +
          '"}'
      );
    } catch (e) {
      console.log(e);
    }
    return obj;
  },
  /**
   * 生成随机字符串
   * @param {Number} len 长度
   * @param {Array} containWord 包含字符类型 capital大写字母、lowercase小写字母、number数字
   */
  random_string(len, containWord = ['capital', 'lowercase']) {
    const length = len || 32;
    let chars = '';
    containWord.indexOf('capital') !== -1 && (chars += 'ABCDEFGHJKMNPQRSTWXYZ');
    containWord.indexOf('lowercase') !== -1 &&
      (chars += 'abcdefhijkmnprstwxyz');
    containWord.indexOf('number') !== -1 && (chars += '0123456789');
    const maxPos = chars.length;
    let str = '';
    for (let i = 0; i < length; i++) {
      str += chars.charAt(Math.floor(Math.random() * maxPos));
    }
    return str;
  },
  //字符串转日期格式，strDate要转为日期格式的字符串
  getDate(strDate) {
    var st = strDate;
    var a = st.split(' ');
    var b = a[0].split('-');
    var c = a[1].split(':');
    var date = new Date(b[0], b[1] - 1, b[2], c[0], c[1], c[2]);
    return date;
  },
  // 判断当前时间往前推导ForwardMon个月(最多12个月)
  getLast3Month(ForwardMon = 3) {
    var now = new Date();
    var year = now.getFullYear();
    var month = now.getMonth() + 1; //0-11表示1-12月
    var day = now.getDate();
    var h = now.getHours(); //获取系统时，
    var m = now.getMinutes(); //分
    var s = now.getSeconds(); //秒
    var dateObj = {};

    dateObj.now = `${year}-${parseInt(month) < 10 ? '0' + month : month}-${
      parseInt(day) < 10 ? '0' + day : day
    } ${parseInt(h) < 10 ? '0' + h : h}:${parseInt(m) < 10 ? '0' + m : m}:${
      parseInt(s) < 10 ? '0' + s : s
    }`;
    for (let mon = 0; mon < ForwardMon; mon++) {
      if (parseInt(month) == mon + 1) {
        //如果是1月份，则取上一年的10月份
        dateObj.last = `${parseInt(year) - 1}-${12 + (mon - month)}-${day}`;
        return dateObj;
      }
    }

    var preSize = new Date(year, parseInt(month) - ForwardMon, 0).getDate(); //开始时间所在月的总天数
    if (preSize < parseInt(day)) {
      // 开始时间所在月的总天数<本月总天数，比如当前是5月30日，在2月中没有30，则取下个月的第一天(3月1日)为开始时间
      let resultMonth =
        parseInt(month) - 2 < 10
          ? '0' + parseInt(month) - 2
          : parseInt(month) - 2;
      dateObj.last = year + '-' + resultMonth + '-01';
      return dateObj;
    }

    if (parseInt(month) <= 10) {
      dateObj.last =
        year + '-0' + (parseInt(month) - ForwardMon) + '-' + day + ' 00:00:00';
      return dateObj;
    } else {
      dateObj.last =
        year + '-' + (parseInt(month) - ForwardMon) + '-' + day + ' 00:00:00';
      return dateObj;
    }
  },
  timeChange(date) {
    var year = date.getFullYear();
    var month = date.getMonth() + 1;
    var strDate = date.getDate();
    var hour = date.getHours();
    var minute = date.getMinutes();
    var second = date.getSeconds();
    month = month > 9 ? month : '0' + month;
    strDate = strDate > 9 ? strDate : '0' + strDate;
    hour = hour > 9 ? hour : '0' + hour;
    minute = minute > 9 ? minute : '0' + minute;
    second = second > 9 ? second : '0' + second;
    var newdata =
      year +
      '-' +
      month +
      '-' +
      strDate +
      ' ' +
      hour +
      ':' +
      minute +
      ':' +
      second;
    return newdata;
  },
  sToHS(s) {
    //计算分钟
    //算法：将秒数除以60，然后下舍入，既得到分钟数
    s = parseInt(s / 1000);
    var h;
    h = Math.floor(s / 60);
    //计算秒
    //算法：取得秒%60的余数，既得到秒数
    s = s % 60;
    //将变量转换为字符串
    h += '';
    s += '';
    //如果只有一位数，前面增加一个0
    h = h.length == 1 ? '0' + h : h;
    s = s.length == 1 ? '0' + s : s;
    return h + '′' + parseInt(s) + '″';
  },
  downExcel(res, name) {
    const aLink = document.createElement('a');
    console.log(res[1]);
    // let blob = new Blob([res.data], { type: "application/vnd.ms-excel" });
    aLink.href = res[1].data.url;
    aLink.setAttribute('download', name); // 设置下载文件名称
    aLink.click();
  },
  returnRate(f, z) {
    f = f ? Number(f) : 0;
    z = z ? Number(z) : 0;
    if (f == 0 || z == 0) {
      return '0%';
    }
    let num = (f / z) * 100 > 0 ? ((f / z) * 100).toFixed(2) : 0;
    if (!z) {
      return f ? f + '%' : '0%';
    } else {
      return !isNaN(num) ? num + '%' : '0%';
    }
  },
  returnRateNo(f, z) {
    f = f ? Number(f) : 0;
    z = z ? Number(z) : 0;
    let num = (f / z) * 100 > 0 ? ((f / z) * 100).toFixed(2) : 0;
    if (f == 0 || z == 0) {
      return 0;
    }
    if (!z) {
      return f ? f : 0;
    } else {
      return !isNaN(num) ? num : 0;
    }
  },
};
export default Utils;
